package com.bawei.viewmodel;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

/**
 1。非正常销毁：横竖屏切换，onCreate方法会重新执行，数据不保留
 2。解决：可以使用ViewModel解决，数据交给viewmodel管理，生命周期长
 3。面试问题：不要向ViewModel中传入Context,会导致内存泄漏，如果使用Context请使用AndroidViewModel的Appliction
 4。面试问题：viewModel如何做到数据管理？为什么数据保留的时间长？？
 （1）第一次创建viewModel，没有就会创建viewModel并存储到ViewModelStore中
 （2）当屏幕旋转的时候，再获得viewModel，直接使用工厂获得对应的viewModel，根据键从ViewModelStore获得对应的ViewModel
 （3）总结：viewModel只会创建一次，下次使用的时候直接获取，所以可以用于保留页面中的数据


 */
public class MainActivity extends AppCompatActivity {
//    private int num;
    private NumAndroidViewModel mNumViewModel;
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = findViewById(R.id.tv);
        //获得对应的viewModel
        mNumViewModel = new ViewModelProvider(this).get(NumAndroidViewModel.class);
        mTextView.setText(mNumViewModel.num+"");
    }
    //点一次数字+1
    public void plus(View view) {
        mNumViewModel.num++;
        mTextView.setText(mNumViewModel.num+"");
    }
}